package com.dshore.messagecenter.service.overview.impl;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.dshore.messagecenter.dao.overview.IndexDao;
import com.dshore.messagecenter.dao.overview.OverViewDao;
import com.dshore.messagecenter.model.system.McColumnInfo;
import com.dshore.messagecenter.model.system.User;
import com.dshore.messagecenter.service.overview.IndexService;
import com.dshore.messagecenter.util.GetNowTimeListOFSeven;
@Service("indexService")
public class IndexServiceImpl implements IndexService{
	@Autowired
	private OverViewDao overViewDao;
	@Autowired
	private IndexDao indexDao;
	
	@Override
	public List<McColumnInfo> queryFirstColumnList() {
		List<McColumnInfo>list=indexDao.getFirstColumnInfo();
		if(list.isEmpty()) {
			return null;
		}else {
			return list;
		}
	}

	@Override
	public List<McColumnInfo> querySecondColumnList1() {
		List<McColumnInfo>list=indexDao.getSecondColumnInfo1();
		if(list.isEmpty()) {
			return null;
		}else {
			return list;
		}
	}

	@Override
	public List<McColumnInfo> querySecondColumnList2() {
		List<McColumnInfo>list=indexDao.getSecondColumnInfo2();
		if(list.isEmpty()) {
			return null;
		}else {
			return list;
		}
	}

	@Override
	public List<McColumnInfo> querySecondColumnList3() {
		List<McColumnInfo>list=indexDao.getSecondColumnInfo3();
		if(list.isEmpty()) {
			return null;
		}else {
			return list;
		}
	}

	@Override
	public List<McColumnInfo> querySecondColumnList4() {
		List<McColumnInfo>list=indexDao.getSecondColumnInfo4();
		if(list.isEmpty()) {
			return null;
		}else {
			return list;
		}
	}

	@Override
	public List<McColumnInfo> querySecondColumnList5() {
		List<McColumnInfo>list=indexDao.getSecondColumnInfo5();
		if(list.isEmpty()) {
			return null;
		}else {
			return list;
		}
	}
	
	@Override
	public List<McColumnInfo> querySecondColumnList6() {
		List<McColumnInfo>list=indexDao.getSecondColumnInfo6();
		if(list.isEmpty()) {
			return null;
		}else {
			return list;
		}
	}

	
	/**
	 * 表1,获取主页实时消息流量图表
	 * @version 8/24
	 */
	@Override
	public List<List<String>> getMessageByNowTime() {
		//获取横坐标时间集合
		GetNowTimeListOFSeven gtls=new GetNowTimeListOFSeven();
		List<String>timelist=gtls.getKpiTimes();
		Date d=new Date();
		DateFormat df=new SimpleDateFormat("yyyy-MM-dd ");
		String riqi=df.format(d);
		List<Map<String, Object>> list=overViewDao.getMessageByNowTime(riqi);
		List<List<String>> li=new ArrayList<>();
		List<String> time=new ArrayList<>();
		List<String> value=new ArrayList<>();
		List<String> xzhou=new ArrayList<>();
		List<String> yzhou=new ArrayList<>();
		
		if(list!=null) {
			for(int i=0;i<list.size();i++) {
				Map<String, Object> map1 =list.get(i);//这是一个map集合，map集合中有两个元素 
				String obj1=map1.get("time").toString();
				time.add(obj1);//时间集合
				String obj2=map1.get("sum").toString();
				value.add(obj2);//值集合
			}
		}
		/*Collections.reverse(li1);
		Collections.reverse(li2);*/
		//timelist  全七个   time 表中查到的
		for(int i=0;i<timelist.size();i++) {
			int xiabiao=time.indexOf(timelist.get(i));
			if(xiabiao==-1) {//timelist的第i个时间不在数据表中
				xzhou.add(timelist.get(i));//把全七个中的第i个赋值到x轴
				yzhou.add("0");//表中没有的数据就为0
			}
			if(xiabiao!=-1) {//timelist的第i个时间    在数据表中
				xzhou.add(timelist.get(i));//把全七个中的第i个赋值到x轴
				yzhou.add(value.get(xiabiao));
			}
		}
		li.add(xzhou);
		li.add(yzhou);
		return li;
	}
	
	/**
	 * 表2,获取主页实时消息发送延迟图表
	 * @version 8/24
	 */
	@Override
	public List<List<String>> getDelayByNowTime() {
		//获取横坐标时间集合
		GetNowTimeListOFSeven gtls=new GetNowTimeListOFSeven();
		List<String>timelist=gtls.getKpiTimes();
		Date d=new Date();
		DateFormat df=new SimpleDateFormat("yyyy-MM-dd ");
		String riqi=df.format(d);
		List<Map<String, Object>> list=overViewDao.getDelayByNowTime(riqi);
		
		List<List<String>> li=new ArrayList<>();
		List<String> time=new ArrayList<>();
		List<String> value=new ArrayList<>();
		List<String> xzhou=new ArrayList<>();
		List<String> yzhou=new ArrayList<>();
		
		if(list!=null) {
			for(int i=0;i<list.size();i++) {
				Map<String, Object> map1 =list.get(i);//这是一个map集合，map集合中有两个元素 
				String obj1=map1.get("time").toString();
				time.add(obj1);//时间集合
				String obj2=map1.get("sum").toString();
				value.add(obj2);//值集合
			}
		}
		/*Collections.reverse(li1);
		Collections.reverse(li2);*/
		//timelist  全七个   time 表中查到的
		for(int i=0;i<timelist.size();i++) {
			int xiabiao=time.indexOf(timelist.get(i));
			if(xiabiao==-1) {//timelist的第i个时间不在数据表中
				xzhou.add(timelist.get(i));//把全七个中的第i个赋值到x轴
				yzhou.add("0");//表中没有的数据就为0
			}
			if(xiabiao!=-1) {//timelist的第i个时间    在数据表中
				xzhou.add(timelist.get(i));//把全七个中的第i个赋值到x轴
				yzhou.add(value.get(xiabiao));
			}
		}
		li.add(xzhou);
		li.add(yzhou);
		return li;
	}
	
	/**
	 * 获取应用数
	 */
	@Override
	public List<Object> getAppAmount() {
		Date d=new Date();
		DateFormat df=new SimpleDateFormat("yyyy-MM-dd ");
		String riqi=df.format(d);  //2018/08/01 
		List<Object> list=overViewDao.getAppAmount(riqi);
		return list;
	}
	
	/**
	 * 获取主题队列数量
	 */
	@Override
	public List<Object> getToppicAmount() {
		Date d=new Date();
		DateFormat df=new SimpleDateFormat("yyyy-MM-dd ");
		String riqi=df.format(d);  //2018/08/01 
		List<Object> list=overViewDao.getToppicAmount(riqi);
		return list;
	}
	
	/**
	 * 获取消息流量
	 */
	@Override
	public List<Object> getMessageAmount() {
		Date d=new Date();
		DateFormat df=new SimpleDateFormat("yyyy-MM-dd ");
		String riqi=df.format(d);  //2018/08/01 
		List<Object> list=overViewDao.getMessageAmount(riqi);
		return list;
	}
	
	/**
	 * 获取消息发送延迟
	 */
	@Override
	public List<Object> getAvgDelay() {
		List<Object> list=overViewDao.getAvgDelay();
		return list;
	}
	
	/**
	 * 表3,获取当前内存图表
	 * @version 8/24
	 */
	@Override
	public List<List<String>>getDataByDate() {
		//获取横坐标时间集合
		GetNowTimeListOFSeven gtls=new GetNowTimeListOFSeven();
		List<String>timelist=gtls.getKpiTimes();
		List<Map<String, Object>> list=overViewDao.getDataByDate();//正常情况下查询出七条数据
		List<List<String>> li=new ArrayList<>();
		List<String> time=new ArrayList<>();
		List<String> value=new ArrayList<>();
		List<String> xzhou=new ArrayList<>();
		List<String> yzhou=new ArrayList<>();
		
		if(list!=null) {
			for(int i=0;i<list.size();i++) {
				Map<String, Object> map1 =list.get(i);//这是一个map集合，map集合中有两个元素 
				String obj1=map1.get("time").toString();
				time.add(obj1);//时间集合
				String obj2=map1.get("sum").toString();
				value.add(obj2);//值集合
			}
		}
		/*Collections.reverse(li1);
		Collections.reverse(li2);*/
		//timelist  全七个   time 表中查到的
		for(int i=0;i<timelist.size();i++) {
			int xiabiao=time.indexOf(timelist.get(i));
			if(xiabiao==-1) {//timelist的第i个时间不在数据表中
				xzhou.add(timelist.get(i));//把全七个中的第i个赋值到x轴
				yzhou.add("0");//表中没有的数据就为0
			}
			if(xiabiao!=-1) {//timelist的第i个时间    在数据表中
				xzhou.add(timelist.get(i));//把全七个中的第i个赋值到x轴
				yzhou.add(value.get(xiabiao));
			}
		}
		li.add(xzhou);
		li.add(yzhou);
		return li;
	}
	
	/**
	 * 表4,根据年月日时分秒获取当前磁盘情况
	 */
	@Override
	public List<List<String>> getcipan() {
		//获取横坐标时间集合
		GetNowTimeListOFSeven gtls=new GetNowTimeListOFSeven();
		List<String>timelist=gtls.getKpiTimes();
		List<Map<String, Object>> list=overViewDao.getcipan();//7条list数据
		
		List<List<String>> li=new ArrayList<>();
		List<String> time=new ArrayList<>();
		List<String> value=new ArrayList<>();
		List<String> xzhou=new ArrayList<>();
		List<String> yzhou=new ArrayList<>();
		
		if(list!=null) {
			for(int i=0;i<list.size();i++) {
				Map<String, Object> map1 =list.get(i);//这是一个map集合，map集合中有两个元素 
				String obj1=map1.get("time").toString();
				time.add(obj1);//时间集合
				String obj2=map1.get("sum").toString();
				value.add(obj2);//值集合
			}
		}
		/*Collections.reverse(li1);
		Collections.reverse(li2);*/
		//timelist  全七个   time 表中查到的
		for(int i=0;i<timelist.size();i++) {
			int xiabiao=time.indexOf(timelist.get(i));
			if(xiabiao==-1) {//timelist的第i个时间不在数据表中
				xzhou.add(timelist.get(i));//把全七个中的第i个赋值到x轴
				yzhou.add("0");//表中没有的数据就为0
			}
			if(xiabiao!=-1) {//timelist的第i个时间    在数据表中
				xzhou.add(timelist.get(i));//把全七个中的第i个赋值到x轴
				yzhou.add(value.get(xiabiao));
			}
		}
		li.add(xzhou);
		li.add(yzhou);
		return li;
	}

	@Override
	public List<User> getUser() {
		List<User> list=indexDao.getUser();
		return list;
	}

	@Override
	public List<McColumnInfo> queryAllMenu() {
		List<McColumnInfo>list=indexDao.queryAllMenu();
		if(list.isEmpty()) {
			return null;
		}else {
			return list;
		}
	}

	@Override
	public List<Integer> queryAllPid() {
		List<McColumnInfo>list=indexDao.queryAllPid();
		List<Integer> pidLi=new ArrayList<>();
		if(list.isEmpty()) {
			return null;
		}else {
			for(McColumnInfo pidList : list){
				int pid=pidList.getPid();
				pidLi.add(pid);
			}
			return pidLi;
		}
	}

	@Override
	public List<McColumnInfo> getMenuByPid(Integer pid) {
		List<McColumnInfo>list=indexDao.getMenuByPid(pid);
		if(list.isEmpty()) {
			return null;
		}else {
			return list;
		}
	}

	

}
